/**
 * 类型定义统一导出模块
 *
 * @fileoverview 聚合和重新导出应用程序所有类型定义，提供统一的类型导入接口。
 * 精心管理命名空间，避免不同模块间的类型名称冲突，确保类型导入的清晰性和一致性。
 *
 * 导出策略：
 * - 使用精确导出（named exports）避免命名冲突
 * - 对重名类型使用别名区分（如 DbAppointmentRecord）
 * - 按功能模块分组导出，便于理解和使用
 * - 所有导出都经过精心筛选，只暴露必要的公共接口
 *
 * 使用方法：
 * ```typescript
 * // 推荐：从统一入口导入
 * import type { AppointmentRecord, ScriptRunRequest, ProxyConfig } from '@shared/types'
 *
 * // 避免：直接从子模块导入（可能导致重复导入和冲突）
 * import type { AppointmentRecord } from '@shared/types/ipc'
 * import type { AppointmentRecord as DbRecord } from '@shared/types/database' // 名称冲突
 * ```
 *
 * @author System
 * @version 1.0.0
 * @since 2024
 *
 * @example
 * ```typescript
 * // 在应用代码中使用
 * import type {
 *   AppointmentRecord,    // IPC层的预约记录
 *   DbAppointmentRecord,  // 数据库层的预约记录
 *   AutomationOptions,    // 自动化选项
 *   AppConfig            // 应用配置
 * } from '@shared/types'
 *
 * const appointment: AppointmentRecord = {
 *   // IPC层的预约记录结构
 * }
 *
 * const dbRecord: DbAppointmentRecord = {
 *   // 数据库层的预约记录结构
 * }
 * ```
 */

// ============================================================================
// 预约领域类型导出
// ============================================================================

/**
 * 预约业务领域相关类型导出
 *
 * @description 导出预约管理核心业务类型，排除与其他模块重名的类型以避免冲突。
 * 包含预约过滤、状态管理、批量操作等业务逻辑类型。
 */
export type {
  /** 预约过滤条件 */
  AppointmentFilters,
  /** 预约列表结果 */
  AppointmentListResult,
  /** 预约管理主接口 */
  AppointmentManagement,
  /** 预约操作日志 */
  AppointmentOperationLog,
  /** 预约状态枚举 */
  AppointmentStatus,
  /** 可用性缓存 */
  AvailabilityCache,
  /** 批量预约 */
  BatchBooking,
  /** 批量操作请求 */
  BatchOperationRequest,
  /** 批量操作结果 */
  BatchOperationResult,
  /** 批次状态 */
  BatchStatus,
  /** 预约模式 */
  BookingMode,
  /** 创建预约输入 */
  CreateAppointmentInput,
  /** 创建批次输入 */
  CreateBatchInput,
  /** Excel导入结果 */
  ExcelImportResult,
  /** Excel行数据 */
  ExcelRowData,
  /** 签发机关 */
  IssuingAuthority,
  /** 签发国家 */
  IssuingCountry,
  /** 操作类型 */
  OperationType,
  /** 分页参数 */
  PaginationParams,
  /** 更新预约输入 */
  UpdateAppointmentInput,
} from './appointment'

// ============================================================================
// 自动化相关类型导出
// ============================================================================

/**
 * 自动化相关类型全量导出
 *
 * @description 导出所有自动化执行相关的类型，包括页面类型、时间段信息、
 * 预约结果、错误处理等。注意：包含自动化模块特有的TimeslotInfo定义。
 */
export * from './automation'

// ============================================================================
// 配置相关类型导出
// ============================================================================

/**
 * 配置管理相关类型全量导出
 *
 * @description 导出应用配置的所有类型定义，包括代理配置、监控配置、
 * 网络配置、日志配置等各个模块的配置项。
 */
export * from './config'

// ============================================================================
// 数据库层类型导出
// ============================================================================

/**
 * 数据库层类型精确导出
 *
 * @description 导出数据库相关的类型定义，使用别名避免与IPC层的同名类型冲突。
 * 主要包含数据库实体、仓储接口等持久化层相关类型。
 */
export type {
  /** 可用性缓存记录 */
  AvailabilityCacheRecord,
  /** 批量用户记录 */
  BatchUserRecord,
  /** 数据库层预约记录（别名避免与IPC层冲突） */
  AppointmentRecord as DbAppointmentRecord,
  /** 预约记录仓储接口 */
  IAppointmentRepository,
  /** 可用性缓存接口 */
  IAvailabilityCache,
  /** 批量用户仓储接口 */
  IBatchUserRepository,
  /** 作业仓储接口 */
  IJobRepository,
  /** 操作日志仓储接口 */
  IOperationLogRepository,
  /** 系统配置仓储接口 */
  ISystemConfigRepository,
  /** 作业记录 */
  JobRecord,
  /** 操作日志记录 */
  OperationLogRecord,
  /** 系统配置记录 */
  SystemConfigRecord,
} from './database'

// ============================================================================
// IPC通信类型导出
// ============================================================================

/**
 * IPC通信相关类型精确导出
 *
 * @description 导出进程间通信所需的类型定义，精确控制导出避免命名冲突。
 * 这些类型主要用于渲染进程和主进程之间的数据传输。
 */
export type {
  /** IPC层预约记录（前端使用的标准定义） */
  AppointmentRecord,
  /** 预约记录导出请求 */
  AppointmentsExportRequest,
  /** 预约记录导出响应 */
  AppointmentsExportResponse,
  /** 预约记录列表请求 */
  AppointmentsListRequest,
  /** 预约记录列表响应 */
  AppointmentsListResponse,
  /** 可用性检查请求 */
  AvailabilityCheckRequest,
  /** 可用性检查响应 */
  AvailabilityCheckResponse,
  /** IPC错误码类型 */
  IPCErrorCode,
  /** 作业状态 */
  JobStatus,
  /** 日志事件 */
  LogEvent,
  /** 获取日志文件请求 */
  LogGetFilesRequest,
  /** 获取日志文件响应 */
  LogGetFilesResponse,
  /** 日志订阅请求 */
  LogSubscribeRequest,
  /** 脚本运行请求 */
  ScriptRunRequest,
  /** 脚本运行响应 */
  ScriptRunResponse,
  /** 脚本状态请求 */
  ScriptStatusRequest,
  /** 脚本状态响应 */
  ScriptStatusResponse,
  /** 脚本停止请求 */
  ScriptStopRequest,
  /** 脚本停止响应 */
  ScriptStopResponse,
} from './ipc'
